#!/bin/bash

# --- 安全提示 ---
echo "********************************************************************************"
echo "警告：此脚本将进行以下更改："
echo "1. 允许 root 用户通过 SSH 登录 (PermitRootLogin yes)"
echo "2. 允许 SSH 使用密码认证 (PasswordAuthentication yes)"
echo "这些更改可能会带来安全风险。强烈建议在初始设置后配置 SSH 密钥认证，"
echo "并考虑禁用 root 密码登录和密码认证（如果适用）。"
echo "********************************************************************************"
read -p "您理解风险并希望继续吗？ (yes/no): " confirm_ssh
if [[ "$confirm_ssh" != "yes" ]]; then
    echo "SSH 配置已跳过。"
else
    echo "正在配置 SSH..."
    # 备份 sshd_config
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup_$(date +%F_%T)
    echo "原 /etc/ssh/sshd_config 文件已备份。"

    # 允许 root 登录
    sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
    # 允许密码认证
    sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
    # 有些系统默认是 KbdInteractiveAuthentication no，也可能影响密码登录
    # sudo sed -i 's/^#\?KbdInteractiveAuthentication.*/KbdInteractiveAuthentication yes/' /etc/ssh/sshd_config


    echo "检查 sshd_config 语法..."
    if sudo sshd -t; then
        echo "sshd_config 语法正确。正在重启 SSH 服务..."
        sudo systemctl restart ssh
        echo "SSH 服务已重启。"
    else
        echo "错误：sshd_config 文件语法错误！SSH 服务未重启。请手动检查 /etc/ssh/sshd_config。"
    fi
fi

echo ""
read -p "您需要配置静态 IP 地址吗？ (yes/no): " confirm_ip
if [[ "$confirm_ip" != "yes" ]]; then
    echo "静态 IP 配置已跳过。"
    exit 0
fi

# --- 网络配置 ---
echo "正在配置静态 IP 地址..."
read -p "请输入网络接口名称 (例如: ens33, eth0): " IFACE_NAME
read -p "请输入静态 IP 地址 (例如: 192.168.9.30): " IP_ADDRESS
read -p "请输入子网掩码 (例如: 255.255.255.0): " NETMASK
read -p "请输入网关地址 (例如: 192.168.9.2): " GATEWAY
read -p "请输入 DNS 服务器 (用空格分隔, 例如: 192.168.9.2 8.8.8.8): " DNS_SERVERS

# 备份现有网络配置
sudo cp /etc/network/interfaces /etc/network/interfaces.backup_$(date +%F_%T)
echo "原 /etc/network/interfaces 文件已备份。"

# 写入新的网络配置
# 注意：这个方法会覆盖现有的 /etc/network/interfaces 内容。
# 如果您有更复杂的现有配置，请谨慎操作或采用更精细的编辑方法。
sudo tee /etc/network/interfaces > /dev/null <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto $IFACE_NAME
allow-hotplug $IFACE_NAME
iface $IFACE_NAME inet static
    address $IP_ADDRESS
    netmask $NETMASK
    gateway $GATEWAY
    dns-nameservers $DNS_SERVERS
EOF

echo "网络配置已写入 /etc/network/interfaces。"
echo "正在应用网络配置 (这可能会导致 SSH 连接暂时中断)..."

# 尝试重启网络服务或接口
if sudo systemctl restart networking; then
    echo "networking 服务已成功重启。"
elif sudo ifdown $IFACE_NAME && sudo ifup $IFACE_NAME; then
    echo "网络接口 $IFACE_NAME 已成功重启。"
else
    echo "警告：自动应用网络配置可能未成功。"
    echo "您可能需要手动执行 'sudo ifdown $IFACE_NAME && sudo ifup $IFACE_NAME' 或重启系统。"
    echo "如果 IP 地址已更改，您当前的 SSH 连接可能已断开。"
fi

echo ""
echo "配置完成！"
echo "请使用 'ip addr show $IFACE_NAME' 和 'ip route' 命令检查您的网络设置。"
echo "并尝试 ping 网关和外部地址 (例如: ping $GATEWAY; ping 8.8.8.8) 来验证连接。"
